package calendar;

import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 *
 * @author angelika
 */
public class Calendar extends JFrame {
    Database database;
    Controls controls;
    Events events;
    Days days;
    
    JLabel background;
    
    public Calendar() {
        database = new Database();
        controls = new Controls(this);
        events = new Events(this);
        days = new Days(this);
        
        background = new JLabel(new ImageIcon("cats.jpg"));
        setContentPane(background);
        
        Container pane = getContentPane();
        pane.setLayout(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        
        c.gridx = 0;
        c.gridy = 0;
        pane.add(controls, c);
        
        c.gridx = 0;
        c.gridy = 1;
        pane.add(days, c);
        
        c.gridx = 1;
        c.gridy = 0;
        c.gridheight = 2;
        c.insets = new Insets(0, 10, 0, 0);
        pane.add(events, c);
        
        pack();
    }
    
    // Этот метод вызывается из класса Controls и переключает месяц или год в Days
    public void newDate(Integer year, Integer month) {
        days.newDate(year, month);
    }
    
    // Этот метод вызывается из Days после смены даты, в том числе после переключения месяца или года
    public void newDate(Integer year, Integer month, Integer day) {
        Date date = new Date(day, month, year);
        String event = database.read(date);
        if (event != null) {
            events.showEvent(event);
        } else {
            events.showEvent("");
        }
    }
    
    public void saveEvent() {
        Date date = days.getDate();
        String event = events.getEvent();
        database.write(date, event);
    }
    
    public static void main(String[] args) {
        Calendar c = new Calendar();
        
        c.setSize(600, 400);
        c.setResizable(false);
        c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        c.setVisible(true);
    }

}
